import 'dart:developer';

import 'package:FlutterDemo/bean/beans_factory.dart';
import 'package:FlutterDemo/widget/scrollviews/helpers/helper_gridview.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

/*GridView_1
gridDelegate 参数控制子控件的排列，有2 个选择：
  • SliverGridDelegateWithFixedCrossAxisCount：交叉轴方向上固定数量，对
    于垂直方向的GridView 来说交叉轴方向指的是水平方向。
  • SliverGridDelegateWithMaxCrossAxisExtent：交叉轴方向上尽量大，比如
    水平方上有500 空间，指定此值为150，那么可以放3 个，剩余一些空间，
    此时GridView 将会缩小每一个Item，放置4 个。
SliverGridDelegateWithFixedCrossAxisCount 有属性介绍如下：
  • crossAxisCount：交叉轴方向上个数。
  • mainAxisSpacing：主轴方向上2 行之间的间隔。
  • crossAxisSpacing：交叉轴方向上之间的间隔。
  • childAspectRatio：子控件宽高比。
设置间隔如下：
GridView(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  crossAxisCount: 3,
  crossAxisSpacing: 2,
  mainAxisSpacing: 4
)
...
)*/
class SampleGridViewWidget extends StatefulWidget {
  const SampleGridViewWidget({Key? key}) : super(key: key);

  @override
  _SampleGridViewWidgetState createState() => _SampleGridViewWidgetState();
}

class _SampleGridViewWidgetState extends State<SampleGridViewWidget> {
  List<Widget> list = [];

  @override
  void initState() {
    super.initState();
    BeansFactory.instance.buildSampleGridViewItems().then((value) {
      setState(() {
        log("更新格子数据...");
        list.addAll(value);
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    // return buildSampleList(list); // 简易列表
    // return buildSampleGridListBuilder(list); // 基于builder创建
    // return buildSampleCustom(list); // 基于custom 创建
    // return buildSampleCount(list); // 基于custom 创建
    return buildSampleExtent(list); // 基于extent 创建
  }


}
